/*
	Copyright (c) 2009-2011, Stefan Webb.

	This file is part of SimpleML. Please read the file "license.txt", 
	which contains the conditions under which this software is distributed.
*/

/*!
	\file agent.h
	\author Stefan Webb
	\brief Definition of Agent class
*/

#ifndef AGENT_H
#define AGENT_H

/*! \brief A type of class with which you communicate, and need to determine 
	if it is ready to do so. */
class Agent : protected HasState<>
{
public:
	/*! \brief Default constructor. */
	Agent();

	/*! \brief Determine if agent is ready to receive communication.
		\return True if agent is ready. False, otherwise. */
	bool isReady();

	/*! \brief Make agent ready. */
	void makeReady();

	/*! \brief Make agent unready. */
	// TODO: Other word for unready to make more readable?
	void makeUnready();
};

#endif